寫了一個撲克牌產生17張,同一數值最多只能有四張
結果我前面的陣列教學出錯啦!!!!
/*產生17張數字牌,同個數字最多只能出現4次*/
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
char cardKind[13]={'A','2','3','4','5','6','7','8','9','T','J','Q','K'}; /*存放13種牌值*/
int a; /* 亂數產生的整數0~12*/
int cardSet[13]={0}; // 紀錄13種撲克牌值的重複次數
char allCard[17]; // 存放17張撲克牌的值
std::fill_n(allCard, 17, '0');
for(int i=0;i<17;i++) // 17張撲克牌中第i張牌, i=0~16
{
while(allCard[i]=='0') // 當第i張牌等於'0',進入迴圈
{
a=rand()%13; // a為亂數
allCard[i]=cardKind[a]; // 把a入第i張撲克牌
cardSet[a]+=1; // 「a」數牌次數+1
for(int j=0;j<13;j++) // 檢查個數字牌重複次數, j=0~13
{
if(cardSet[j] ==4) /* 當重複次數等於4時,將j數字牌設值為'0' */
{
cardKind[j]='0';
}
}
}
}
for(int q=1,b;q<18;q++) // 列印17張牌的數值
{
b=q-1;
cout<<"第"<<q<<"張牌為 "<<allCard[b]<<endl;
}
}